package com.smile.model.request;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import lombok.ToString;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

@Data
@ToString
@JsonIgnoreProperties(ignoreUnknown = true)
public class AddAirlineRequest implements Serializable {

    /**
     * 航线名称
     */
    @NotBlank(message = "航线名称不能为空")
    private String airlineName;

    /**
     * 参考起飞点
     */
    @NotBlank(message = "参考起飞点不能为空")
    private String takeOffRefPoint;

    /**
     * 航线类型 0.点状航线，1.线状航线
     */
    @NotNull(message = "航线类型不能为空")
    private Integer airlineType;

    /**
     * 0支持广角照片 1.不支持广角照片
     */
    @NotNull(message = "您需要指定是否支持广角照片")
    private Integer wideType;

    /**
     * 0支持变焦照片 1不支持变焦照片
     */
    @NotNull(message = "您需要指定是否支持变焦照片")
    private Integer zoomType;

    /**
     * 0支持红外摄像头 1 不支持红外摄像头
     */
    private Integer irType;

    /**
     * 0支持红可见光 1 不支持红可见光
     */
    private Integer visableType;



    /**
     * 0相对起飞点高度 1相对地面高度 2绝对高度
     */
    @NotNull(message = "请设置高度类型,0相对起飞点高度 1相对地面高度 2绝对高度")
    private Integer airlineHeightType;

    /**
     * 飞行高度
     */
    @NotNull(message = "飞行高度没有设置")
    private BigDecimal globalHeight;

    /**
     * 飞行速度
     */
    @NotNull(message = "请设置飞行速度")
    private BigDecimal autoFlightSpeed;

    /**
     * 起飞速度
     */
    @NotNull(message = "请设置起飞速度")
    private BigDecimal globalTransitionalSpeed;

    /**
     * 0沿航线方向 1手动控制 2锁定当前偏航角
     */

    private Integer attitudeHead;

    /**
     * 航点类型 0. 协调转弯，不过点，提前转弯
     * 1. 直线飞行，飞行器点到停
     * 2. 平滑过点，提前转弯
     * 3. 曲线飞行，飞行器到点停
     * 4. 曲线飞行，飞行器过点不停
     */
    private Integer wayPointType;

    /**
     * 0自动返航
     * 1返回航线到起始点悬停
     * 2退出航线模式
     * 3原地降落
     */
    private Integer outOfControlAction;

    /**
     * 0自动返航
     * 1返回航线到起始点悬停
     * 2退出航线模式
     * 3原地降落
     */
    private Integer finishAction;

    /**
     * 安全起飞高度
     */
    private BigDecimal takeOffSecurityHeight;

    /**
     * 全局返航高度
     */
    private BigDecimal globalRTHHeight;

    private String airportPosition;

    private String airportName;

    private Long airportId;


    /**
     * 航点数
     */
    private Integer pointNum;

    /**
     * 预计执行时间
     */
    private String executeTime;

    /**
     * 总里程
     */
    private Integer totalDistance;

    /**
     * 航点集合
     */
    private List<AddWayPointRequest> wayPoints;


    /**
     * 品牌id
     */
    private Long brandId;


    /**
     * 品牌id
     */
    private Long seriesId;

    /**
     * 品牌id
     */
    private Long modelId;


    /**
     * 品牌id
     */
    private String deviceModelKey;

}
